A network, such as a local area network (LAN), a wide area network (WAN), or a storage area network (SAN), typically comprise a plurality of devices that may forward information to a target device via at least one shared communication link, path, or switch. Congestion may occur within the network when a total offered load (i.e., input) to a communications link, path, or switch exceeds the capacity of the shared communications link, path, or switch. During such congestion, design features of the link, path, switch, or network may result in unfair and/or undesirable allocation of resources available to one device or piece of data at the expense of another.
A SAN, for example, may be implemented as a high-speed, special purpose network that interconnects different kinds of data storage devices with associated data servers on behalf of a large network of users. Typically, a SAN includes high-performance switches as part of the overall network of computing resources for an enterprise. The SAN is usually clustered in close geographical proximity to other computing resources, such as mainframe computers, but may also extend to remote locations for backup and archival storage using wide area network carrier technologies.
The high-performance switches of a SAN comprise multiple ports and can direct traffic internally from a first port to a second port during operation. Typically, the ports are bi-directional and can operate as an input port for information received at the port for transmission through the switch and as an output port for information that is received at the port from within the switch for transmission away from the switch. As used herein, the terms “input port” and “output port,” where they are used in the context of a bi-directional switch, generally refer to an operation of the port with respect to a single direction of transmission. Thus, each port can usually operate as an input port to forward information to at least one other port of the switch operating as an output port for that information, and each port can also usually operate as an output port to receive information from at least one other port operating as an input port.
Where a single output port receives information from a plurality of ports operating as input ports, for example, the combined bandwidth of the information being offered to the switch at those input ports for transmission to a designated port operating as an output port for that information may exceed the capacity of the output port itself or some internal resource of the switch and lead to congestion. Where the switches comprise a hierarchy of internal multiplexers, switches, and other circuit elements, such congestion may lead to an unfair and/or undesirable allocation of switch resources to information received at a particular input versus information received at another input.
A global scheduler that operates as a master arbiter for a switch has been used to deal with unfairness caused by the switching architecture during congested operation. Such a scheduler monitors all the input ports and output ports of the switch. The scheduler also controls a common multiplexer to prioritize switching operations across the switch and achieve a desired allocation of system resources. Since the scheduler monitors and controls every input and output of the switch, the scheduler is not scalable as the number of resources within the switch increases. Rather, as more and more resources or other components are added to a switch, the complexity of the scheduler increases exponentially and slows the response time of the switch.